<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        [v-cloak] {
            display: none;
        }
    </style>
    <script type='text/javascript' src='../js/vue.js'></script>
    <script type='text/javascript' src=''></script>

</head>

<body>
    <!-- 
        1、定义语法：
            (1)局部指令：
            new Vue({
                directives:{指令名：配置对象}
            })
            或
            new Vue({
                directives({指令名：回调函数})
            })
            （2）全局指令：
            Vue.directive(指令名,配置对象)
            或
            Vue.directive(指令名,回调函数)
            2、配置对象中常用的3个回调：
                （1）.bind指令与元素陈宫绑定时调用
                （2）.inserted指令所在元素被插入页面时
                （3）.update指令所在模板被重新解析时
            3、
            指令定义时不加v-
            指令名如果是多个单词，使用-链接方式  
     -->
    <div id="root">
        <div>当前n值是：<span v-text="n"></span></div>
        <div>放大10倍后的n值：<span v-big="n"></span></div><br />
        <button @click="n++">点击n+1</button>
        <hr />
        <input type='text' v-fbind:value='n' />
    </div>
    <script>
        Vue.config.productionTip = false;
        //全局指令
        Vue.directive('fbind', {

        })

        new Vue({
            el: '#root',
            data: {
                n: 1
            },
            directives: {//this是window
                //big函数调用：1、指令与函数成功绑定 2、指令所在模板被重新解析时
                big(element, binding) {
                    // console.log(element instanceof HTMLElement)
                    console.log(element, binding)
                    element.innerText = binding.value * 10
                },
                fbind: {
                    // 指令与元素成功绑定时
                    bind(element, binding) {
                        element.value = binding.value
                    },
                    //指令所在元素被插入页面时
                    inserted(element, binding) {
                        element.focus()

                    },
                    //指令所在模板被重新解析时
                    update(element, binding) {
                        element.value = binding.value

                    }
                }
            }

        })
    </script>
</body>

</html>